package com.sjz.bookmark.util;

import java.util.Map;
import java.util.concurrent.ConcurrentHashMap;

public class TimeUtils {

    // 使用 ConcurrentHashMap 存储计时数据，确保线程安全
    private static final Map<String, Long> TIME_MAP = new ConcurrentHashMap<>();

    // 开始计时
    public static void startTime(String methodName) {
        if (methodName == null || methodName.isEmpty()) {
            System.err.println("方法名不能为空！");
            return;
        }
        if (TIME_MAP.containsKey(methodName)) {
            System.err.println("警告: 方法名 '" + methodName + "' 已经被使用，可能导致计时数据不准确！");
        }
        long startTime = System.currentTimeMillis();
        TIME_MAP.put(methodName, startTime);
        System.out.println(methodName + " 开始执行...");
    }

    // 结束计时并打印执行时间
    public static void endTime(String methodName) {
        if (methodName == null || methodName.isEmpty()) {
            System.err.println("方法名不能为空！");
            return;
        }
        Long startTime = TIME_MAP.get(methodName);
        if (startTime != null) {
            long endTime = System.currentTimeMillis();
            long executionTime = endTime - startTime;
            System.out.println(methodName + " 执行完成，耗时: " + executionTime + " 毫秒");
            // 清理计时数据，避免内存泄漏
            TIME_MAP.remove(methodName);
        } else {
            System.out.println(methodName + " 未找到开始时间，无法计算执行时间。");
        }
    }

    // 清理所有计时数据（可选，用于显式释放资源）
    public static void clearAll() {
        TIME_MAP.clear();
        System.out.println("已清理所有计时数据。");
    }
}